#include "handler_client.h"
#include <errno.h> 
int stdinCommand(int sockfd,stdin_msg_t stdin_msg){
     switch(stdin_msg.type)
    {
       case CMD_CD:
            // TODO: 处理cd命令
            stdin_cd(sockfd,stdin_msg);
            break;
        case CMD_LS:
            // TODO: 处理ls命令
            stdin_ls(sockfd,stdin_msg);
            break;
        case CMD_PWD:
            // TODO: 处理pwd命令
            stdin_pwd(sockfd,stdin_msg);
            break;
        case CMD_PUTS_REQ:
            // TODO: 准备处理 puts
            //stdin_puts(sockfd,stdin_msg);
            stdin_puts(sockfd,stdin_msg);
            break;
        case CMD_GETS_REQ:
            // TODO: 准备处理 gets
            stdin_gets(sockfd,stdin_msg);
            break;
        case CMD_QUIT:
            // TODO: 用户正常退出
           stdin_quit(sockfd,stdin_msg);
            break;
        case CMD_MKDIR:
            // TODO: 处理mkdir命令
            stdin_mkdir(sockfd,stdin_msg);
            break;
        case CMD_RMDIR:
            // TODO: 处理rmdir命令
            stdin_rmdir(sockfd,stdin_msg);
            break;
        case CMD_CLOSE:
            // TODO: 处理close命令
            stdin_close(sockfd,stdin_msg);
            break;

        default:
        {
            printf("输入指令有误，请重新输入！\n");
            break;
        }
    }
    return 0;
}

int stdin_cd(int sockfd,stdin_msg_t stdin_msg){
    tlv_msg_t send_msg;
    tlv_msg_t recv_msg;
    bzero(&send_msg,sizeof(tlv_msg_t));
    bzero(&recv_msg,sizeof(tlv_msg_t));
    tlv_create(&send_msg,stdin_msg.type,strlen(stdin_msg.value),stdin_msg.value);

    tlv_send(sockfd, &send_msg);

    if(errno == 32){
        printf("您长时间为发送命令，已被踢出系统！\n");
        close(sockfd);
        exit(1);
    }
    
    tlv_recv(sockfd,&recv_msg);
    printf("%s\n",recv_msg.value);
    return 0;
}

int stdin_ls(int sockfd,stdin_msg_t stdin_msg){
    tlv_msg_t send_msg;
    char *value = "123344";
    tlv_msg_t recv_msg;
    bzero(&send_msg,sizeof(tlv_msg_t));
    bzero(&recv_msg,sizeof(tlv_msg_t));
    tlv_create(&send_msg,stdin_msg.type,strlen(value),value);

    tlv_send(sockfd, &send_msg);

    if(errno == 32){
        printf("您长时间为发送命令，已被踢出系统！\n");
        close(sockfd);
        exit(1);
    }
   
    tlv_recv(sockfd,&recv_msg);
    printf("%s\n",recv_msg.value);
    return 0;
    
}

int stdin_pwd(int sockfd,stdin_msg_t stdin_msg){
    tlv_msg_t send_msg;
    char *value = "124";
    tlv_msg_t recv_msg;
    bzero(&send_msg,sizeof(tlv_msg_t));
    bzero(&recv_msg,sizeof(tlv_msg_t));
    tlv_create(&send_msg,stdin_msg.type,strlen(value),value);

    tlv_send(sockfd, &send_msg);

    if(errno == 32){
        printf("您长时间为发送命令，已被踢出系统！\n");
        close(sockfd);
        exit(1);
    }
    
    tlv_recv(sockfd,&recv_msg);
    printf("%s\n",recv_msg.value);
    return 0;
}

int stdin_quit(int sockfd,stdin_msg_t stdin_msg){
    printf("退出程序\n");
            close(sockfd);
            exit(0);
}
int stdin_mkdir(int sockfd,stdin_msg_t stdin_msg){
    tlv_msg_t send_msg;
    tlv_msg_t recv_msg;
    bzero(&send_msg,sizeof(tlv_msg_t));
    bzero(&recv_msg,sizeof(tlv_msg_t));
    
    tlv_create(&send_msg,stdin_msg.type,strlen(stdin_msg.value),stdin_msg.value);

    tlv_send(sockfd, &send_msg);
   
    if(errno == 32){
        printf("您长时间为发送命令，已被踢出系统！\n");
        close(sockfd);
        exit(1);
    }
    
    tlv_recv(sockfd,&recv_msg);
    printf("%s\n",recv_msg.value);
    return 0;
}
int stdin_rmdir(int sockfd,stdin_msg_t stdin_msg){
    tlv_msg_t send_msg;
    tlv_msg_t recv_msg;
    bzero(&send_msg,sizeof(tlv_msg_t));
    bzero(&recv_msg,sizeof(tlv_msg_t));
    
    tlv_create(&send_msg,stdin_msg.type,strlen(stdin_msg.value),stdin_msg.value);

    tlv_send(sockfd, &send_msg);
   
    if(errno == 32){
        printf("您长时间为发送命令，已被踢出系统！\n");
        close(sockfd);
        exit(1);
    }
    
    tlv_recv(sockfd,&recv_msg);
    printf("%s\n",recv_msg.value);
    return 0;
}
int stdin_close(int sockfd,stdin_msg_t stdin_msg){
    tlv_msg_t send_msg;
    tlv_msg_t recv_msg;
    bzero(&send_msg,sizeof(tlv_msg_t));
    bzero(&recv_msg,sizeof(tlv_msg_t));
    
    tlv_create(&send_msg,stdin_msg.type,strlen(stdin_msg.value),stdin_msg.value);

    tlv_send(sockfd, &send_msg);
   
    if(errno == 32){
        printf("您长时间为发送命令，已被踢出系统！\n");
        close(sockfd);
        exit(1);
    }
    
    tlv_recv(sockfd,&recv_msg);
    printf("%s\n",recv_msg.value);
    printf("用户已注销，程序退出\n");
    close(sockfd);
    exit(0);
    return 0;
}

